﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;
using GiaoTrinhEPU.Repositories;

namespace GiaoTrinhEPU.Repositories.DataModels
{
    public class SyllabusModel
    {
        [HiddenInput(DisplayValue = false)]
        public int Id { get; set; }


        [Required(ErrorMessage = "Mã giáo trình không được để trống")]
        [DataType(DataType.Text)]
        [Display(Name = "Mã Giáo Trình")]
        public String Code { get; set; }

        [Required(ErrorMessage = "Tên giáo trình không được để trống")]
        [DataType(DataType.Text)]
        [Display(Name = "Tên Giáo Trình")]
        [Remote("IsNameAvaiable","Syllabus", AdditionalFields = "Id")]
        public String Name { get; set; }

        [Required(ErrorMessage = "Tên nhà xuất bản không được để trống")]
        [Display(Name = "Tên Nhà Sản Xuất")]
        public int PublisherId { get; set; }

        [Display(Name = "Số Trang")]
        public int NPage { get; set; }

        [Display(Name = "Số Chương")]
        public int NChapter { get; set; }


        [Display(Name = "Giá In")]
        public int Price { get; set; }

        [Required(ErrorMessage = "Tên hệ không được để trống")]
        [Display(Name = "Tên hệ")]
        public int DegreeId { get; set; }

        [Required(ErrorMessage = "Tên khoa không được để trống")]
        [Display(Name = "Tên Khoa")]
        public int DepartmentId { get; set; }

        [Required(ErrorMessage = "Tên trình độ không được để trống")]
        [Display(Name = "Tên Trình Độ")]
        public int LevelId { get; set; }

        [DataType(DataType.MultilineText)]
        [AllowHtml]
        [Display(Name = "Mô tả")]
        public String Description { get; set; }

        [HiddenInput(DisplayValue = false)]
        public String CreatedBy { get; set; }

        [HiddenInput(DisplayValue = false)]
        public DateTime CreatedDate { get; set; }

        [HiddenInput(DisplayValue = false)]
        public DateTime ModifiedDate { get; set; }

        [HiddenInput(DisplayValue = false)]
        public String ModifiedBy { get; set; }

        [HiddenInput(DisplayValue = false)]
        public long ModifiedCount { get; set; }

        public String DepartmentName { get; set; }

        public String DegreeName { get; set; }

        public String LevelName { get; set; }

        public String PublisherName { get; set; }


         public SyllabusModel() : base() { }
         public SyllabusModel(Syllabus syllabus)
            : base()
        {
            this.Id = (int)syllabus.Id;
            this.Code = syllabus.Code;
            this.Name = syllabus.Name;
            this.PublisherId = syllabus.PublisherId;
            this.DegreeId = syllabus.DegreeId;
            this.DepartmentId = syllabus.DepartmentId;
            this.LevelId = syllabus.LevelId;
            this.NPage = (int)syllabus.NPage;
            this.NChapter = (int)syllabus.NChapter;
            this.CreatedBy = syllabus.CreatedBy;
            this.CreatedDate = syllabus.CreatedDate;
            this.ModifiedCount = (int)syllabus.ModifiedCount;
            this.ModifiedDate = syllabus.ModifiedDate;
            this.ModifiedBy = syllabus.ModifiedBy;
            this.Description = syllabus.Description;
            
            
        }
    }
}
